/*
    基于服务注册中心的rpc调用测试：rpc服务端
*/

#include "../../server/rpc_server.hpp"

void add(const Json::Value &params, Json::Value &result)
{
    result = params["num1"].asInt() + params["num2"].asInt();
}

int main()
{
    SetDefaultLogLevel(Level::INFO);

    // 1、 组织服务描述对象 && 注册服务（注册方法）
    ns_jsonrpc::ns_server::ServiceDescribeBuilder builder;
    builder.setMethodName("add");
    builder.setParamsDes("num1", ns_jsonrpc::ns_server::ParamType::INTEGRAL);
    builder.setParamsDes("num2", ns_jsonrpc::ns_server::ParamType::INTEGRAL);
    builder.setReturnType(ns_jsonrpc::ns_server::ParamType::INTEGRAL);
    builder.setCallback(add);
    ns_jsonrpc::ns_server::ServiceDescribe::ServiceDescribePtr serviceDes = builder.build();

    // 2、创建rpc服务器 & 注册服务 & 启动服务
    ns_jsonrpc::ns_server::RpcServer rpcSrv(ns_jsonrpc::Address("127.0.0.1", 8080), ns_jsonrpc::Address("127.0.0.1", 8081), true); // 开启服务注册中心
    rpcSrv.registerMethod(serviceDes);
    rpcSrv.start();

    return 0;
}